package org.jupiter.blog.service.service;

import org.jupiter.blog.api.dto.JupiterPermissionUrlDTO;

import java.util.List;

public interface JupiterPermissionUrlService {

	/**
	 * 创建权限URL关联
	 */
	void createPermissionUrl(JupiterPermissionUrlDTO dto);

	/**
	 * 根据UUID获取权限URL关联
	 */
	JupiterPermissionUrlDTO getById(String uuid);

	/**
	 * 更新权限URL关联
	 */
	void updatePermissionUrl(String uuid, JupiterPermissionUrlDTO dto);

	/**
	 * 删除权限URL关联
	 */
	void deletePermissionUrl(String uuid);

	/**
	 * 分页查询权限URL关联列表
	 */
	List<JupiterPermissionUrlDTO> getByPage(JupiterPermissionUrlDTO queryDTO);

	/**
	 * 获取权限URL关联总数
	 */
	long getCount(JupiterPermissionUrlDTO queryDTO);

	/**
	 * 获取所有权限URL关联
	 */
	List<JupiterPermissionUrlDTO> getAll();

	/**
	 * 根据权限UUID获取URL关联列表
	 */
	List<JupiterPermissionUrlDTO> getByPermissionUuid(String permissionUuid);

	/**
	 * 根据URL资源UUID获取权限关联列表
	 */
	List<JupiterPermissionUrlDTO> getByUrlResourceUuid(String urlResourceUuid);

	/**
	 * 根据权限UUID和URL资源UUID获取关联
	 */
	JupiterPermissionUrlDTO getByPermissionAndUrlResource(String permissionUuid, String urlResourceUuid);

	/**
	 * 删除权限的所有URL关联
	 */
	void deleteByPermissionUuid(String permissionUuid);

	/**
	 * 删除URL资源的所有权限关联
	 */
	void deleteByUrlResourceUuid(String urlResourceUuid);

	/**
	 * 批量创建权限URL关联
	 */
	void batchCreatePermissionUrls(List<JupiterPermissionUrlDTO> dtos);

	/**
	 * 批量删除权限的URL关联
	 */
	void batchDeleteByPermissionUuid(String permissionUuid, List<String> urlResourceUuids);

	/**
	 * 为权限分配URL资源
	 */
	void assignUrlsToPermission(String permissionUuid, List<String> urlResourceUuids);
}
